package cn.patient.pp.module.patients.controller.admin.vo;

import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;

import java.time.OffsetDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Arrays;
import java.util.List;

@Data
public class DataComparisonReqVO {

    @DateTimeFormat(pattern = "yyyyMMdd")
    private String[] times;

    private List<Long> deptIds;

    private Long deptId;

    private String dictType;

    // 解析用的 ISO-8601，含 Z/±HH:MM 时区
    private static final DateTimeFormatter IN_FMT  = DateTimeFormatter.ISO_OFFSET_DATE_TIME;
    // 输出用的 yyyyMMdd
    private static final DateTimeFormatter OUT_FMT = DateTimeFormatter.ofPattern("yyyyMMdd");

    public void setTimes(String[] times) {
        if (times == null) {
            this.times = null;
        } else {
            this.times = Arrays.stream(times)
                    .map(s -> {
                        // 如果传入值本身可能就是 yyyyMMdd，先做简单 check 避免二次 parse
                        if (s.matches("\\d{8}")) {
                            return s;
                        }
                        // 标准 ISO-8601 → OffsetDateTime → yyyyMMdd
                        return OffsetDateTime.parse(s, IN_FMT)
                                .format(OUT_FMT);
                    })
                    .toArray(String[]::new);
        }
    }
}
